package memento;

/**
 * 备忘录模式：
 *  不破坏对象封装的前提下，保存对象的内部状态，并在之后某个阶段恢复对象的这个状态
 *  1. 原始对象
 *  2. 备忘录
 * =>
 *  1.记录多个时间点的备份数据
 *  2.需要快速撤销当前操作并恢复到某个状态
 */
public class MementoTest {
    public static void main(String[] args) {
        //原始对象
        Originator originator = new Originator();
        originator.setId("1");
        originator.setName("对对对");
        originator.setPhone("11111111111");
        System.out.println("原始对象：");
        System.out.println(originator);
        //备忘录对象
        Memento memento = originator.create();
        //修改原对象
        originator.setName("不对");
        System.out.println("修改原始对象");
        System.out.println(originator.toString());
        //恢复对象
        System.out.println("从备份中恢复");
        originator.restore(memento);
        System.out.println(originator.toString());
    }
}
